package myzzyl.service;

import myzzyl.domain.dto.SysDeptDto;
import myzzyl.domain.pojo.SysDept;
import com.baomidou.mybatisplus.extension.service.IService;
import myzzyl.domain.vo.SysDeptVo;
import myzzyl.domain.vo.TreeVo;

import java.util.List;

/**
* @author 33249
* @description 针对表【sys_dept(部门表)】的数据库操作Service
* @createDate 2025-08-13 14:33:54
*/
public interface SysDeptService extends IService<SysDept> {

    /**
     * 获取父级编号下的所有子部门
     * @return 返回值
     */
    List<SysDeptVo> getAll(SysDeptDto sysDeptDto);

    /**
    * 获取部门详情数据
    * @param id 主键id
    * @return 返回值
    */
    SysDeptVo getInfo(Long id);


    /**
     * 新增部门
     * @param sysDeptDto 部门表单请求封装类
     * @return 返回值
     */
    boolean add(SysDeptDto sysDeptDto);


    /**
     * 编辑部门
     * @param sysDeptDto 部门表单请求封装类
     * @return 返回值
     */
    boolean edit(SysDeptDto sysDeptDto);


    /**
     * 删除部门
     * @param deptNo 部门编号
     * @return 返回值
     */
    boolean remove(String deptNo);

    /**
     * 启用或禁用部门
     * @param sysDeptDto 部门表单请求封装类
     * @return 返回值
     */
    boolean enableOrDisableSysDept(SysDeptDto sysDeptDto);

    /**
     * 获取所有部门及其子部门
     * @param sysDeptDto 部门表单请求封装类
     * @return 返回值
     */
    TreeVo tree(SysDeptDto sysDeptDto);
}